home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2008 January / Cybermycha 1_2008.iso / Data.cab / _9C5250A85B534DC1A323DAB91BDF16BD < prev    next >
Encoding:
Text File  |  2004-05-31  |  2.4 KB  |  124 lines

  1.  
  2. regc(0, "COMBINED_XFORM")
  3. regc(4, "MODEL_XFORM")
  4.  
  5. regc(8, "TEXTURE2_XFORM")
  6. regc(10, "TEXTURE3_XFORM")
  7.  
  8. regc(12, "FOG_PARAMS")
  9.  
  10. regcn(13, "DIRECTIONAL_DIR_MS", 0)
  11. regc(14, "CAMERA_POS_MS")
  12.  
  13. // ------------ c40 - c60 reserved
  14. !include("vs_spot_consts.inc")
  15.  
  16. vshader("
  17.  
  18. #define point        v0
  19. #define point1        v4
  20. #define normal        v1
  21. #define tangent        v2
  22. #define tcoord        v3
  23. #define weight        v5
  24.  
  25. #define fogp    c12
  26. #define ldir    c13
  27. #define cpos    c14
  28.  
  29.     vs_1_1
  30.  
  31. #include    <cardef.h>
  32. #include    <fog.inc>
  33.  
  34.     dcl_position0    point
  35.     dcl_position1    point1
  36.     dcl_normal        normal
  37.     dcl_tangent        tangent
  38.     dcl_texcoord    tcoord
  39.     dcl_blendweight weight
  40.  
  41.     def    c20, 1, 0, SCRATCHTHRESHOLD, FRESNELSCALE
  42.  
  43.     ; morphing
  44.     mov r1, point
  45.     sub  r0, point1, r1
  46.     mad  r0, weight.x, r0, r1
  47.     ; output position
  48.     m4x4    oPos, r0, c0
  49.     ; output texcoords
  50.     mov    oT0, tcoord           // color
  51.     ; output DamageLevel
  52.     sge oT4.y, weight.x, c20.z
  53.  
  54.     // binormal = tangent x normal
  55.     mov r0.xyz, normal
  56.     mul r1.xyz, r0.yzxw, tangent.zxyw
  57.     mad r0.xyz, r0.zxyw, tangent.yzxw, -r1
  58.  
  59.     ; r4 L tangent space
  60.     dp3 r4.x, tangent, ldir
  61.     dp3 r4.y, r0, ldir
  62.     dp3 r4.z, normal, ldir
  63.  
  64.     ; normalize L
  65.     dp3 r4.w, r4, r4
  66.     rsq r4.w, r4.w
  67.     mul oT1.xyz, r4, r4.w
  68.  
  69.     ; E in model space
  70.     add r5, cpos, -point
  71.       ; fresnel
  72.     dp3 r6.w, r5, r5
  73.     rsq r6.w, r6.w
  74.     mul r6.xyz, r5, r6.w
  75.  
  76.     dp3    r6.w, r6, normal
  77.     mad r6.w, r6.w, -r6.w, c20.x  // -dot(E, N)*dot(E, N)+1 = 1- pow(dot(E, N),2)
  78.     mul    r6.w, r6.w, r6.w        //f^2
  79.     ; output fresnel
  80.     mul oT4.x, r6.w, c20.w
  81.  
  82.     ; reflect E
  83.     dp3 r5.w, r5, normal
  84.     add r6.w, r5.w, r5.w
  85.     mad r6.xyz, normal, r6.w, -r5 // dot(E, N)*2 *N - E
  86.  
  87.     ; output R in world space    (do cubemapy - nie normalizowac!!!!)
  88.     dp3 oT3.x, -r6, c4
  89.     dp3 oT3.y, -r6, c5
  90.     dp3 oT3.z, -r6, c6
  91.  
  92.     ; normalize R
  93.     dp3 r6.w, r6, r6
  94.     rsq r6.w, r6.w
  95.     mul r6.xyz, r6, r6.w
  96.  
  97.     ; output R in tangent space
  98.     dp3 oT2.x, tangent, r6
  99.     dp3 oT2.y, r0, r6
  100.     dp3 oT2.z, normal, r6
  101.  
  102. ;------------------------------------------
  103. // spot light
  104. // used r0 - r2
  105. #if VS_SPOTLIGHTS
  106. #include <vs_spot_func.inc>
  107. #endif
  108. ;----------------------------
  109.  
  110.     ; calc fog
  111.        dp4    r0.x, point, c2
  112.        FOG(r0.x, fogp, r10)
  113.  
  114.     ; clouds texgen (from model space)
  115.     dp4    oT5.x, point, c8
  116.     dp4    oT5.y, point, c9
  117.  
  118.     ; terrain lightmap texgen (from model space)
  119.     dp4    oT6.x, point, c10
  120.     dp4    oT6.y, point, c11
  121.  
  122. ")
  123.  
  124.